/*
    https://mp.weixin.qq.com/s/ESG46WnkoTu46KmLmQBVLQ
*/
/*
    1. 说一下 Vue 的双向绑定数据的原理?
    vue 实现数据双向绑定主要是：采用数据劫持结合“发布者 - 订阅者”模式的方式，
    通过 Object.defineProperty() 来劫持各个属性的 setter、 getter，
    在数据变动时发布消息给订阅者，触发相应监听回调。
*/
/*
    2. 解释单向数据流和双向数据绑定?
    单向数据流： 顾名思义，数据流是单向的。
    数据流动方向可以跟踪，流动单一，追查问题的时候可以更快捷。
    缺点就是写起来不太方便。
    要使 UI 发生变更就必须创建各种 action 来维护对应的 state。
    双向数据绑定：数据之间是相通的，将数据变更的操作隐藏在框架内部。
    优点是在表单交互较多的场景下，会简化大量与业务无关的代码。
    缺点就是无法追踪局部状态的变化，增加了出错时 debug 的难度。
*/
/*
    3. 对MVC和MVVM的理解?

    MVC 所有通信都是单向的，
    1，view传送指令给C；
    2，C完成业务逻辑之后，要求M改变状态；
    3，M将新的数据发送给V，用户得到反馈
    MVVM 各部分之间的通信是双向的
*/
/*
    4，Vue各个生命周期的理解
    beforeCreated() 在实例加载之前执行，数据没有加载
    created  在实例创建，数据加载之后，能初始化数据，DOM加载之前
    beforeMount() 虚拟DOM创建完成，在数据渲染之前最后一次更改数据
    mounted() 页面数据渲染完成，真实DOM挂载完成
    beforeUpadate()：重新渲染之前触发。
    updated()：数据已经更改完成，DOM 也重新 render 完成，更改数据会陷入死循环。
    beforeDestory() 和 destoryed()：前者是销毁前执行（实例仍然完全可用），后者则是销毁后执行。
*/




